﻿/*
 * SharpDevelop으로 작성되었습니다.
 * 사용자: 2120
 * 날짜: 2012-10-02
 * 시간: 오후 2:33
 * 
 * 이 템플리트를 변경하려면 [도구->옵션->코드 작성->표준 헤더 편집]을 이용하십시오.
 */
using System;
using System.Drawing;
using System.Windows.Forms;

namespace NtLibrary.Bitmap
{
	/// <summary>
	/// 싱글톤 패턴이며, 인스턴스를 받아 사용합니다
	/// </summary>
	public sealed class BitmapManager
	{
		private static BitmapManager manager = null;
		
		/// <summary>
		/// BitmapManager의 인스턴스를 가져옵니다.
		/// </summary>
		/// <returns>생성되어 있는 객체를 리턴합니다.</returns>
		public static BitmapManager GetInstance()
		{
			if(manager == null){
				manager = new BitmapManager();
			}
			
			return manager;
		}
		
		
		private BitmapManager()
		{
			
		}
		
		/// <summary>
		/// 그릴수 있는 비트맵을 생성합니다.
		/// </summary>
		/// <returns>비트맵을 리턴합니다.</returns>
		public System.Drawing.Bitmap CreateBitmap(int width,int height)
		{
			 return new System.Drawing.Bitmap(width, height);
		}
		
		/// <summary>
		/// 팬을 생성합니다.
		/// </summary>
		/// <returns>생성된 팬을 리턴합니다</returns>
		public Pen CreatePen(Color c)
		{
			return new Pen(c);
		}
		
		/// <summary>
		/// 브러쉬를 생성합니다.
		/// </summary>
		/// <returns>생성된 브러쉬를 리턴합니다.</returns>
		public Brush CreateBrush(Color b)
		{
			return new SolidBrush(b);
		}
		
		
		/// <summary>
		/// 해당 비트맵으로부터 Graphics객체를 가져옵니다.
		/// </summary>
		public Graphics GetDC(System.Drawing.Bitmap bitmap)
		{
			return Graphics.FromImage(bitmap);
		}
		
		/// <summary>
		/// Grahpics객체의 메모리를 해제합니다.
		/// </summary>
		public void ReleaseDC(System.Drawing.Bitmap bitmap)
		{
			bitmap.Dispose();
		}
		
		/// <summary>
		/// PictureBox에 해당 비트맵을 적용시킵니다.
		/// </summary>
		public void Apply(PictureBox p,System.Drawing.Bitmap b)
		{
			p.Image = b;
		}
		
		/// <summary>
		/// 해당 비트맵을 클리어합니다.
		/// </summary>
		/// <param name="c">배경색</param>
		public void Clear(System.Drawing.Bitmap bitmap,Color c)
		{
			GetDC(bitmap).Clear(c);
		}
	}
}
